//封装一个tap和swipe的函数
function $$(selector) {
    //获取事件源
    var dom = document.querySelector(selector);
    // 声明一个对象,存储方法函数
    var obj = {
        tap: function (callback) {
            // 定义变量按下时间,及按下的初始位置坐标; 和抬起时间, 抬起的位置坐标
            var startTime, startX, startY, endTime, endX, endY;
            // 绑定按下事件
            dom.addEventListener("touchstart", function (e) {
                //1.判断按下触点超过1个则退出程序
                if (e.touches.length > 1) {
                    return;
                }
                //2. 获取点击时的时间,为1970年1月1日到现在的毫秒数
                startTime = Date.now();
                //3.获取以适口屏幕为坐标的x,y位置
                startX = e.touches[0].clientX;
                startY = e.touches[0].clientY;
            });
            // 绑定抬起事件
            dom.addEventListener("touchend", function (e) {
                //1.判断状态改变的手指个数
                if (e.changedTouches.length > 1) {
                    return;
                }
                //2. 获取手指状态改变的时间
                endTime = Date.now();
                // 定义时间间隔超过200毫秒则不为点击事件
                if (endTime - startTime > 200) {
                    return;
                }
                //3.记录抬起手指的位置坐标
                endX = e.changedTouches[0].clientX;
                endY = e.changedTouches[0].clientY;
                //4.根据抬起位置和按下的位置的距离,定义超过5px则不为点击
                if (Math.abs(endX - startX) > 5 || Math.abs(endY - startY) > 5) {
                    return;
                }
                // 以上都满足,则说明事件为点击事件,调用回调函数
                callback()
            });
            // 返回调用tap的对象
            // return obj;
        },
        swipe: function (callback) {
            // 定义点击的初始时间,初始坐标,抬起的时间,抬起的坐标
            var startTime, startX, startY, endTime, endX, endY;
            // 注册点击事件
            dom.addEventListener("touchstart", function (e) {
                // 判断点击的手指个数,超过1个则退出程序
                if (e.touches.length > 1) {
                    return;
                }
                // 获取点击的时间
                startTime = Date.now();
                //获取点击的坐标
                startX = e.touches[0].clientX;
                startY = e.touches[0].clientY;
            })
            // 注册抬起事件
            dom.addEventListener("touchend", function (e) {
                //判断改变手指状态的个数,超过1个则退出程序
                if (e.changedTouches.length > 1) {
                    return;
                }
                // 记录抬起的时间
                endTime = Date.now()
                // 自定义抬起时间间隔超过800毫秒则不属于轻滑事件,退出程序
                if (endTime - startTime > 800) {
                    return;
                }
                // 记录抬起的位置坐标
                endX = e.changedTouches[0].clientX;
                endY = e.changedTouches[0].clientY;
                // 根据滑动的输出对应的方向
                //定义滑动的方向
                var direction;
                if (Math.abs(endX - startX) > 5) { // 判断水平方位
                    direction = (endX > startX ? "right" : "left")
                } else if (Math.abs(endY - startY) > 5) { // 判断垂直方位
                    direction = (endY > startY ? "down" : "up")
                } else { // 不符合滑动则退出程序
                    return;
                }
                // 以上都满足,则说明事件为点击事件,调用回调函数
                callback(direction);
            });
            // 返回调用swipe的对象
            // return obj;
        }
    };
    // 调用$$函数返回一个对象
    return obj;
}